As shown in FIG. 1, digital video cameras 100 receive light 106 and generate a digital output signal 102, which may be comprised of separate multi-bit (e.g. 10-bit) red (R), green (G) and blue (B) signals. Historically, these cameras 100 were expected to feed a live display, and thus image processing circuitry within the camera tailored the digital output signal 102 for a particular type of display monitor 104, such as a cathode ray tube (CRT) monitor, which produced unique color characteristics due to the physical properties of the CRT. Alternatively or additionally, the image processing was configured to emulate the color characteristics produced by a particular film negative and a particular print film type. In such systems, the display 104 merely reproduced an image according to the received digital output signal 102.
Conventional digital video cameras generate a digital output signal 102 as a function of the amount of light 106 received into the camera (see curve 112 in FIG. 1 representing the amount of light versus the digital output signal). This curve 112 is specifically designed to compensate for the non-linear color characteristics of a conventional display, so that the gamma-corrected result is a substantially linear response. Although only a single curve 112 is shown in FIG. 1 for clarity, it should be understood that a separate curve exists for each of the colors R, G and B. The digital output signal 102 is generally a multiple-bit signal (e.g., 10 bits) that represents a certain number (e.g., from 0 to 1023).
Note, however, that the amount or quantity of light 106 that a conventional digital video camera can convert to a digital output signal 102 (see point 108 in FIG. 1b) is much less than the entire amount or quantity of light available to be detected. In contrast, state-of-the-art high definition digital video cameras, such as the Genesis® video camera manufactured by Panavision Inc., are able to convert a much wider range of light (see point 110 representing the high end of this wide range of detectable light) to a digital output signal (see curve 114). Nevertheless, despite this wider dynamic range, only the amount of light detectable by conventional digital video cameras (see point 108 representing the high end of this more limited range of detectable light) is generally used for real-time display (monitoring) purposes, although the full dynamic range, including light levels above point 108, are recorded.
One side effect of the increased dynamic range of state-of-the-art digital video cameras is that when digital output signals from these video cameras are fed into conventional display monitors 104 such as CRTs, the image generally appears much darker than when conventional video cameras are used as the source of the digital output signals. This phenomenon is illustrated in FIG. 1, where for a particular light level 108, a conventional digital video camera may produce a maximum digital output signal 102 (e.g. a 10-bit value of 1023), while for that same light level 108, a state-of-the-art high definition digital video camera may produce a much lower digital output signal (e.g. a 10-bit value of 680). In other words, a state-of-the-art high definition digital video camera does not output a typical video camera signal, and does not convert the incoming light to a digital output signal in the same way as conventional digital video cameras.
As illustrated in FIG. 2, to compensate for the generally lower digital output signal 202 produced by state-of-the-art digital video cameras 200 for a given light level as described above, and to provide the ability to perform procedural processing (adjusting parameters such as gamma, saturation, gain, contrast, pedestal, offset and the like), image processors 216 are typically connected between the camera 200 and the display 204. Among other things, the image processor 216 can receive the generally lower digital output signal 202 from a state-of-the-art digital video camera 200 and map or convert it to the full range digital output signal expected by the display 204 (see reference character 218), so that the resulting video image can be displayed at its proper intensity.
Image processors are manufactured by a number of companies, and each image processor may convert input video image data to output video image data using different processing steps. Additionally, controls are provided for adjusting various parameters. For example, the adjustment of gain, offset and saturation for each color, to name a few, may be performed in different orders, and the individual color adjustments may be performed in different orders. In addition, users of image processors may change image processing parameters in a number of different ways in a number of different sequences and yet achieve virtually the same desired color characteristics.
One conventional processing step utilized within image processors is the use of so-called three-dimensional (3D) look-up tables (LUTs). Input video image data can be applied to a 3D LUT to generate output video image data having video image characteristics specific to that particular 3D LUT. For example, a so-called “viewing LUT” may be employed to convert the generally lower digital output signal 202 from a state-of-the-art digital video camera 200 to a corrected full range digital output signal expected by the display 204, so that the resulting video image can be displayed at its proper brightness.
FIG. 3 graphically represents an exemplary 3D LUT 300. The term “3D” is used because three axes can be used to represent the colors R, G and B. For example, in FIG. 3 the color R is represented along the x-axis, the color G is represented along the y-axis, and the color B is represented along the z-axis. Although the digital output signal from the camera may provide a resolution of 10 bits (1024 values) per color, for example, generating an exhaustive table for all three colors would amount to a table containing 1024×1024×1024 entries, or over one billion entries. Therefore, in practical applications, the 3D LUT 300 may be comprised of a lower resolution table with a fewer number of entries, such as 17×17×17 entries, or less than 5000 entries. Each entry contains a triplet of values x′, y′ and z′ for each color R, G and B, respectively, where x′, y′ and z′ range from 0 to 1023 (a 10-bit value), for example.
When the actual 10-bit digital output signal values x, y, and z for each color R, G and B, respectively, are applied to the 3D LUT, where x, y and z range from 0 to 1023, the 3D LUT generates modified digital output signal values x′, y′ and z′. Note, however, that in embodiments in which the 3D LUT is a lower resolution table (e.g. 17×17×17 instead of 1024×102×1024), the image processor may perform extrapolation on entries in the 3D LUT to obtain accurate x′, y′ and z′ values.
FIG. 4 illustrates a series of processing steps performed within an exemplary image processor to perform color processing on a pixel-by-pixel basis (as opposed to spatial or temporal filtering or processing). In the example of FIG. 4, the original digital output signal 400 comprised of n-bit R, G and B signals x, y and z are fed into a 3D LUT 402, which may be utilized to perform color conversion and generated modified digital output signal values x′, y′ and z′ as described above. The color converted digital output signal may then be fed into a one-dimensional (ID) LUT 404, which may be used for a number of purposes such as gain adjustments, black level adjustments, or gamma conversion. Note that the ID LUT 404 may be the only processing step needed if the image processor only adjusted the intensity of the image.
Next, the digital output signal may be gamma-converted in gamma (gain) processing block 406, and then fed into a matrix 408 which can perform intentional cross-contamination of one color with another (i.e. mixing of colors), adjust gain, saturation, and the like. The digital output signal may then be fed into a saturation processing block 410, to change the saturation of the image, and then to another ID LUT 412 to perform additional color conversion. The result of all image processing steps is a modified digital output signal values x″, y″ and z″ (see reference character 414).
As noted above, the image processing steps illustrated in FIG. 4 are merely exemplary, and different steps and orders may be used. Because there is no standardized image processing methodology, the image processing steps used by one manufacturer and one user cannot easily be applied to another manufacturer's image processor. As a result, obtaining the same image processing results using different image processors has been difficult to achieve.
To overcome the incompatibilities between image processors, 3D LUTs have been used to capture most or all of the processing steps performed by an image processor (e.g. all of the steps shown in FIG. 4), including any 3D LUTs used as one of the processing steps. Using 3D LUTs allows different image processors to obtain the same image processing results by effectively replacing processing steps and parameter adjustments (i.e. all procedural processing) with a 3D LUT.
For example, suppose that a pre-configured 3D LUT was loaded into block 402 in FIG. 4 of an image processor, but the resulting display looked too “cold.” Adjustments could then be made to the other processing steps in FIG. 4 to create a new color space and make the color look “warmer.” The end result of the entire processing chain is that the 3D LUT stored in block 402 has been changed using the other processing steps. A new 3D LUT can then be captured to represent the entire processing chain. This new 3D LUT can then be transferred to other image processing devices to duplicate the captured effects. If, for example, other image processing devices had the same processing steps as shown in FIG. 4, the new 3D LUT would be stored in block 402, and all other processing steps would be set to have no effect. The resultant image processing in this other image processing device would be identical to the original image processor.
However, heretofore it has been difficult to generate a particular 3D LUT for particular video image characteristics. Manual processes are required to generate a 3D LUT corresponding to a particular image processor's processing steps and settings. FIG. 5 illustrates an exemplary manual process for generating a 3D LUT, which requires that a PC 506 be connected to the image processor 502. In FIG. 5, a test signal x, y and z may be manually generated using a digital imaging application such as Adobes Photoshop® 500 in PC 506, stored in a frame store 510, and fed into image processor 502. The resultant output signal may be captured in a memory or storage such as a disk array or frame store 504 within the PC. Adobe® Photoshop® may again be used within PC 506 to generate the modified digital output signal x′, y′ and z′, which may then be stored in a table in memory or storage 508. For each entry in the table, which can amount to thousands of entries, a particular x, y and z test signal value must be generated and applied, and the resulting x′, y′ and z′ output values measured and stored. The complete 3D LUT can be generated only after this manual process is repeated for all entries in the table.
Therefore, there is a need for an image processor that can more efficiently generate a 3D LUT that represents its current image processing steps and settings. Furthermore, there is a need for an image processor that can efficiently generate a 3D LUT that represents the image processing of any external or third-party image processor.